home *** CD-ROM | disk | FTP | other *** search
- /* GadTools layout toolkit
- **
- ** Copyright © 1993-1995 by Olaf `Olsen' Barthel
- ** Freely distributable.
- */
-
- #include "gtlayout_global.h"
-
- #ifdef DO_PASSWORD_KIND
- ULONG __asm __saveds
- LTP_PasswordEditRoutine(register __a0 struct Hook *Hook,register __a2 struct SGWork *Work,register __a1 ULONG *Msg)
- {
- ObjectNode *Node;
-
- if(GETOBJECT(Work -> Gadget,Node))
- {
- STRPTR Buffer = Node -> Special . String . RealString;
- STRPTR Original = Node -> Special . String . Original;
- WORD Len;
-
- if(Work -> IEvent -> ie_Code == 0x5F)
- {
- LayoutHandle *Handle = Hook -> h_Data;
-
- if(Handle -> HelpHook)
- {
- Work -> Code = 0x5F;
- Work -> Actions = (Work -> Actions & ~SGA_BEEP) | SGA_END | SGA_USE;
-
- return(TRUE);
- }
- }
-
- switch(*Msg)
- {
- case SGH_KEY:
-
- switch(Work -> EditOp)
- {
- case EO_INSERTCHAR:
-
- Buffer[Work -> BufferPos - 1] = Work -> Code;
- Buffer[Work -> NumChars] = 0;
-
- Work -> Code = (WORD)'·';
-
- Work -> WorkBuffer[Work -> BufferPos - 1] = (UBYTE)'·';
-
- break;
-
- case EO_RESET:
-
- Len = strlen(Original);
-
- strcpy(Buffer,Original);
-
- memset(Work -> WorkBuffer,'·',Len);
-
- Work -> WorkBuffer[Len] = 0;
-
- Work -> NumChars = Len;
- Work -> BufferPos = Len;
- Work -> EditOp = EO_BIGCHANGE;
-
- break;
-
- case EO_CLEAR:
-
- Work -> WorkBuffer[0] = 0;
- Work -> NumChars = 0;
- Work -> BufferPos = 0;
- Work -> EditOp = EO_BIGCHANGE;
-
- Buffer[0] = 0;
-
- break;
-
- case EO_DELBACKWARD:
-
- Buffer[Work -> NumChars] = 0;
- break;
-
- case EO_NOOP:
-
- break;
-
- case EO_ENTER:
-
- strcpy(Original,Buffer);
-
- if(!(Work -> IEvent -> ie_Qualifier & QUALIFIER_SHIFT))
- {
- if(!Node -> Special . String . LastGadget && Node -> Special . String . LayoutHandle -> AutoActivate)
- Work -> Actions |= SGA_NEXTACTIVE;
-
- if(!(Work -> Actions & SGA_NEXTACTIVE))
- Work -> Code = '\r';
- }
-
- break;
-
- case EO_MOVECURSOR:
- case EO_DELFORWARD:
-
- Work -> Actions &= ~SGA_USE;
- break;
-
- default:
-
- Work -> Actions &= ~SGA_USE;
- Work -> Actions |= SGA_BEEP;
- break;
- }
-
- break;
-
- case SGH_CLICK:
-
- Work -> BufferPos = Work -> NumChars;
- Work -> EditOp = EO_BIGCHANGE;
-
- break;
- }
-
- return(TRUE);
- }
- else
- return(FALSE);
- }
- #endif
-